#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>

#define PIPE_SIZE 2
#define BUFFER_SIZE 10  


int myDiv(int num1, int num2)
{
    return num1 / num2;
}

int main()
{
    #if 0
    int ret = myDiv(10, 0);
    printf("ret:%d\n", ret);
    #endif

    /* 除了 {-1, 0, 1} 以外的所有都叫魔数. */

    pid_t pid = fork();
    if (pid < 0)
    {

    }
    else if (pid == 0)
    {
        /* 子进程 */
        // 子进程执行的代码
        printf("Child process is running\n");

        while (1)
        {
            printf("I am a child.\n");
            sleep(1);
        }

    }
    else
    {        /* 返回值就是我子进程的PID */
        
        /* 父进程 */
        sleep(1);

        /* 杀掉子进程 */
        int ret = kill(pid, SIGKILL);
        if (ret == -1)
        {
            perror("kill error");
            exit(-1);
        }

        /* 回收资源 */
        wait(NULL);

    }

    return 0;
}

// int main() 
// {
//     pid_t child_pid;

//     child_pid = fork();

//     if (child_pid == 0) 
//     {
//         // 子进程执行的代码
//         printf("Child process is running\n");
//         sleep(10);  // 子进程休眠10秒钟
//         printf("Child process is done\n");
//     } else if (child_pid > 0) 
//     {
//         // 父进程执行的代码
//         printf("Parent process is running\n");
        
//         // 在父进程中等待2秒钟
//         sleep(2);
        
//         // 杀死子进程
//         kill(child_pid, SIGKILL);
        
//         printf("Child process killed\n");
//     } else 
//     {
//         // fork() 出错的情况
//         perror("Fork failed");
//         return 1;
//     }

//     return 0;
// }